package easy;

/**
 * @author admin
 * 415. 字符串相加
 * 解题思路：模拟法（双指针），想象成我们自己在计算两数相加的结果就好了。定义两个变量，
 * 分别指向两个字符串的末尾，还有一个变量来决定是否进1。用一个StringBuffer来保存结果。
 * 判断条件是两个字符串还没遍历完以及add不为0。用一个变量res来保存每位相加的结果，存入
 * ans中。最后反转ans并转化为string
 *
 */
public class LeeCode415 {


    public String addStrings(String num1, String num2) {
        int length1 = num1.length() - 1;
        int length2 = num2.length() - 1;
        int add = 0;
        StringBuffer ans = new StringBuffer();
        while (length1 >= 0 || length2 >= 0 || add != 0){
            int x = length1 >= 0 ? num1.charAt(length1)-'0' : 0;
            int y = length2 >= 0 ? num2.charAt(length2)-'0' : 0;
            int res = x + y + add;
            ans.append(res%10);
            add = res/10;
            length1--;
            length2--;
        }
        ans.reverse();
        return ans.toString();
    }

    public static void main(String[] args) {
        System.out.println(new LeeCode415().addStrings("11", "123"));
    }
}
